home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SYMBOL / Symbol Generators / Fibonacci Series / gen-fibonacci next >
Lisp/Scheme  |  1998-10-23  |  3KB  |  79 lines

  1. gen-fibonacci level seed-element1 seed-element2
  2.  
  3. gen-fibonacci constructs fibonacci symbols from seed-element1 and seed-element2. New material is formed by appending the previously generated fibonacci symbols together. The process depth is controlled by the level. Use this function to generate melodies or rhythms, which are at same time regular yet changing and grow organically.
  4.  
  5. (gen-fibonacci 1 'a 'b)    --> (a b)
  6. (gen-fibonacci 2 'a 'b)    --> (a b a)
  7. (gen-fibonacci 3 'a 'b)    --> (a b a a b)
  8. (gen-fibonacci 4 'a 'b)    --> (a b a a b a b a)
  9. (gen-fibonacci 5 'a 'b)    --> (a b a a b a b a a b a a b)
  10. (gen-fibonacci 6 'a 'b)    --> (a b a a b a b a a b a a b a b a a b a b a)
  11.  
  12. (gen-fibonacci 6 'a 'b)    
  13. --> (a b a a b a b a a b a a b a b a a b a b a)
  14.  
  15. (gen-fibonacci 4 '1/16 '1/8)
  16. --> (1/16 1/8 1/16 1/16 1/8 1/16 1/8 1/16)
  17.  
  18. (gen-fibonacci 4 '(64 74) '(84 54))
  19. --> (64 74 84 54 64 74 64 74 84 54 64 74 84 54 64 74)
  20.  
  21. (gen-fibonacci 2 '(a b c) '(c d e)) 
  22. --> (a b c c d e a b c)
  23.  
  24. Breaking Structures
  25.  
  26. For example, this is quite monotonic and boring by itself.
  27.  
  28. (gen-fibonacci 6 'a 'b)
  29. --> (a b a a b a b a a b a a b a b a a b a b a)
  30.  
  31. But mixing brownian noise to it breaks the structure and makes it more interesting.
  32.  
  33. (gen-random-variate 0.8 0.9 0 1 (gen-fibonacci 6 'a 'b))
  34. --> (a b a a b b c b b c b b c a b a a b a b a)
  35.  
  36. The sequence of symbols in a list above may represent velocities, rhythms, melodies, chord sequences, section structures, what ever you want to give them a meaning.
  37.  
  38. About nested fibonacci structures
  39.  
  40. Nested fibonacci structures lead in interesting forms, like in the following. When you visualize the output it looks like arabian writing.
  41.  
  42. (gen-fibonacci 5 (gen-fibonacci 3 'a 'b) (gen-fibonacci 3 'c 'd))
  43. --> (a b a a b c d c c d a b a a b a b a a b c d c c d a b a a b c d c 
  44. c d a b a a b a b a a b c d c c d a b a a b a b a a b c d c c d)
  45.  
  46. 4th level recursive expansion of the fibonacci source above makes it a fibonacci fractal. It might be interesting melodic source material to start exploring further.
  47.  
  48. (defsym a (gen-fibonacci 3 'a 'b))
  49. (defsym b (gen-fibonacci 3 'c 'd))
  50. (defsym c '(a b))
  51.  
  52. (gen-trans a 4)
  53. --> (a b c d e f e e f e g h g g h d e f e e f d e f e e f e g h g 
  54. g h d f e f g f e f f e f g c d e f e e f e g h g g h d e f e e f 
  55. d e f e e f e g h g g h c d e f e e f e g h g g h d e f e e f d e 
  56. f e e f e g h g g h d f e f g f e f f e f g c e d e f e e f e g h 
  57. g g h f e d e f e e f e g h g g h e d e f e e f e g h g g h f b c 
  58. d e f e e f e g h g g h d e f e e f d e f e e f e g h g g h d f e 
  59. f g f e f f e f g c d e f e e f e g h g g h d e f e e f d e f e e 
  60. f e g h g g h c d e f e e f e g h g g h d e f e e f d e f e e f e 
  61. g h g g h d f e f g f e f f e f g b c d e f e e f e g h g g h d e 
  62. f e e f d e f e e f e g h g g h d f e f g f e f f e f g c d e f e 
  63. e f e g h g g h d e f e e f d e f e e f e g h g g h c d e f e e f 
  64. e g h g g h d e f e e f d e f e e f e g h g g h d f e f g f e f f 
  65. e f g c e d e f e e f e g h g g h f e d e f e e f e g h g g h e d 
  66. e f e e f e g h g g h f)
  67.  
  68. More Examples
  69.  
  70. (defsym a '(a b c))
  71. (defsym c '(c b a))
  72.  
  73. (setq melody 
  74.     (gen-fibonacci 6 
  75.         (gen-trans a 2) 
  76.         (symbol-retrograde (gen-trans a 2))))
  77.  
  78. (setq velocity (vector-smooth 3 (symbol-to-vector melody)))
  79.